package persistencia.carreras.ensambladores;

import java.util.Map;
import java.util.TreeMap;

import persistencia.carreras.ensambladores.general.EnsambladorCircunferencia;
import persistencia.carreras.ensambladores.general.EnsambladorRectangulo;
import persistencia.carreras.ensambladores.general.EnsambladorSegmento;
import persistencia.compartido.MicroEnsamblador;

import modelo.geometria.*;

public class ArmadorFiguras {
	protected Map<String, MicroEnsamblador<Figura>> ensambladores;
	
	protected static ArmadorFiguras instancia = null;
	
	public static ArmadorFiguras getInstancia() {
		if (instancia == null)
			instancia = new ArmadorFiguras();
		return instancia;
	}
	
	private ArmadorFiguras() {
		ensambladores = new TreeMap<String, MicroEnsamblador<Figura>>();
		
		String clave;
		clave = Rectangulo.class.getSimpleName();
		ensambladores.put(clave,new EnsambladorRectangulo());
		clave = Circunferencia.class.getSimpleName();
		ensambladores.put(clave,new EnsambladorCircunferencia());
		clave = Segmento.class.getSimpleName();
		ensambladores.put(clave,new EnsambladorSegmento());
	}
	
	public Figura leerFigura (String str) {
		String[] tipo = str.split(MicroEnsamblador.en);

		MicroEnsamblador<? extends Figura> ens = ensambladores.get(tipo[1]);
		Figura figura = ens.leer(str);
		return figura;
	}
	
	public String escribirFigura (Figura figura) {
		MicroEnsamblador<Figura> ens = ensambladores.get(figura.getClass().getSimpleName());
		return ens.escribir(figura);
	}
}
